//#include<bits/stdc++.h>
//using namespace std;
//int main()
//{
//	int n;
//	cin >> n;
//	int count = 1;
//	for (int i = 2 ; i <= n/2 + 1; i++) {
//		int temp = n*1.0;
//		int arr[n] = {0};
//		arr[0] = n;
//		int k = 1;
//		while (temp) {
//			if (temp == 1 || temp %1 !=0) {
//				break;
//			}
//			temp /= i;
//			if (temp * 2 <= arr[k - 1]) {
//				arr[k++] = temp;
//				++count;
//			}
////			cout << temp <<" ";
//		}
////		cout << endl;
//	}
//
//	cout << count << endl;
//	return 0;
//}
#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int n;
	cin >> n;

	vector<int> dp(n + 1, 0);//

	dp[0] = 1; // 边界条件

	for (int i = 1; i <= n; i++) {//
		for (int j = 1; j <= i / 2; j++) {
			dp[i] += dp[j];
		}
		dp[i]++; // 加上只包含自己的数列
	}

	cout << dp[n] << endl;

	return 0;
}

